import router from '@/router'
import { useUserStore } from '@/stores/user'
import { message } from 'ant-design-vue'

let firstFetchLoginUser = true

router.beforeEach(async (to, from, next) => {
  const loginUserStore = useUserStore()
  let loginUser = loginUserStore.userInfo
  if (firstFetchLoginUser) {
    //确保页面首次加载时, 能等后端返回数据之后再校验权限
    await loginUserStore.fetchLoginUser()
    loginUser = loginUserStore.userInfo
    firstFetchLoginUser = false
  }

  const toUrl = to.fullPath
  //可以自定义权限校验逻辑, 比如学生才可以访问带有/studnet的页面,教师才可以访问带有/teacher的页面
  // 学生才可以访问带有/student的页面
  if (toUrl.includes('/student')) {
    if (!loginUser || loginUser.data.isTeacher !==0) {
      message.error('无权限访问')
      next('/user/login')
      return
    }
  }

  // 教师才可以访问带有/teacher的页面
  if (toUrl.includes('/teacher')) {
    if (!loginUser || loginUser.data.isTeacher !== 1) {
      message.error('无权限访问')
      next('/user/login')
      return
    }
  }
  // 所有其他路径（非/admin）默认允许通过
  next()
})
